package edu.cgpi.core.entidade;

import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import com.thoughtworks.xstream.annotations.XStreamImplicit;

public class RetaPoligonal implements FormaGeometrica {

	@XStreamImplicit
	private List<Ponto> pontos;
	
	public RetaPoligonal(List<Ponto> pontos){
		this.pontos = pontos;
	}
	
	public List<Ponto> getPontos() {
		return pontos;
	}

	@Override
	public Ponto obterLocalizacao() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Double calcularDistancia(FormaGeometrica forma) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Set<Ponto> obterPontos() {
		Set<Ponto> pontosObtidos = new HashSet<Ponto>();
		if (pontos.size() > 1) {
			Iterator<Ponto> it = pontos.iterator();
			Ponto pontoInicial = it.next();
			Ponto pontoAtual = pontoInicial;
			Ponto pontoSeguinte = null;
			while (it.hasNext()) {
				pontoSeguinte = it.next();
				pontosObtidos.addAll(new Reta(pontoAtual, pontoSeguinte).obterPontos());
				pontoAtual = pontoSeguinte;
			}
			pontosObtidos.addAll(new Reta(pontoSeguinte, pontoInicial).obterPontos());
		}
		else
			pontosObtidos.addAll(pontos);
		return pontosObtidos;
	}

}
